home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / architecture / m68k / zsreg.h < prev   
Text File  |  1992-11-10  |  2KB  |  125 lines

  1. /*
  2.  * Serial channel register definitions.
  3.  *
  4.  * History
  5.  * 22-May-91  Gregg Kellogg (gk) at NeXT
  6.  *    Split out public interface.
  7.  *
  8.  * 04-Apr-90    Doug Mitchell at NeXT
  9.  *    Added protogtype for zs_tc; made all of this file except for ioctl's
  10.  *        dependent on ifdef KERNEL. 
  11.  */
  12.  
  13. #ifndef    _M68K_ZSREG_
  14. #define _M68K_ZSREG_
  15.  
  16. #import <sys/ioctl.h>
  17. #import <sys/types.h>
  18. #import    <architecture/zs85C30.h>
  19.  
  20. #ifdef    ARCH_PRIVATE
  21.  
  22. #import <bsd/m68k/cpu.h>
  23. #import <bsd/machine/machparam.h>
  24.  
  25. #if    KERNEL || STANDALONE || MONITOR
  26.  
  27. #import    <architecture/zs85C30.h>
  28.  
  29. #define    ZSADDR_A    ((volatile struct zsdevice *) (P_SCC + 1))
  30. #define    ZSADDR_B    ((volatile struct zsdevice *) (P_SCC))
  31.  
  32. struct zsdevice {
  33.     unsigned char    zs_ctrl;    /* control register */
  34.     unsigned char : 8;
  35.     unsigned char    zs_data;    /* data register */
  36. };
  37.  
  38. /* SCC clock select register */
  39. #define    SCC_RESET    0x80
  40. #define    PCLK_10_MHZ    0x30
  41. #define    PCLK_4_MHZ    0x10
  42. #define    PCLK_313_ESCLK    0x10        /* dma 313 chip */
  43. #define    PCLK_3684_MHZ    0x00
  44. #define    SCLKB_ESCLK    0x0c
  45. #define    SCLKB_4_MHZ    0x08
  46. #define    SCLKB_10_MHZ    0x04
  47. #define    SCLKB_313_ESCLK    0x04        /* dma 313 chip */
  48. #define    SCLKB_3684_MHZ    0x00
  49. #define    SCLKA_ESCLK    0x03
  50. #define    SCLKA_4_MHZ    0x02
  51. #define    SCLKA_10_MHZ    0x01
  52. #define    SCLKA_313_ESCLK    0x01        /* dma 313 chip */
  53. #define    SCLKA_3684_MHZ    0x00
  54.  
  55. /*
  56.  * Clocks available to SCC
  57.  */
  58. #define    PCLK_NEW_HZ    10000000
  59. #define    PCLK_HZ         3684000
  60. #define    RTXC_NEW_HZ     3684000
  61. #define    RTXC_HZ         4000000
  62.  
  63. /*
  64.  * Macros for reading various registers in the 8530
  65.  * NOTE: these should be used only at splscc()!
  66.  */
  67. #define    ZSREAD_A(dst, regno)    \
  68.     { \
  69.         DELAY(1); \
  70.         ZSADDR_A->zs_ctrl = (regno); \
  71.         DELAY(1); \
  72.         (dst) = ZSADDR_A->zs_ctrl; \
  73.     }
  74.  
  75. #define    ZSREAD_B(dst, regno)    \
  76.     { \
  77.         DELAY(1); \
  78.         ZSADDR_B->zs_ctrl = (regno); \
  79.         DELAY(1); \
  80.         (dst) = ZSADDR_B->zs_ctrl; \
  81.     }
  82.  
  83. #define    ZSWRITE_A(regno, val)    \
  84.     { \
  85.         DELAY(1); \
  86.         ZSADDR_A->zs_ctrl = (regno); \
  87.         DELAY(1); \
  88.         ZSADDR_A->zs_ctrl = (val); \
  89.     }
  90.  
  91. #define    ZSWRITE_B(regno, val)    \
  92.     { \
  93.         DELAY(1); \
  94.         ZSADDR_B->zs_ctrl = (regno); \
  95.         DELAY(1); \
  96.         ZSADDR_B->zs_ctrl = (val); \
  97.     }
  98.  
  99. #define    ZSREAD(zsaddr, dst, regno)    \
  100.     { \
  101.         DELAY(1); \
  102.         (zsaddr)->zs_ctrl = (regno); \
  103.         DELAY(1); \
  104.         (dst) = (zsaddr)->zs_ctrl; \
  105.     }
  106.  
  107. #define    ZSWRITE(zsaddr, regno, val)    \
  108.     { \
  109.         DELAY(1); \
  110.         (zsaddr)->zs_ctrl = (regno); \
  111.         DELAY(1); \
  112.         (zsaddr)->zs_ctrl = (val); \
  113.     }
  114.  
  115. /*
  116.  * Public functions
  117.  */
  118. extern int zs_tc(int baudrate, int clkx);
  119.  
  120. #endif    KERNEL || STANDALONE || MONITOR
  121.  
  122. #endif    ARCH_PRIVATE
  123.  
  124. #endif _M68K_ZSREG_
  125.